#!/usr/bin/env bash

# Script flags
PATH_FLAG=''

while getopts 'P:' flag; do
    case "${flag}" in
        P)
            PATH_FLAG="${OPTARG}"
            INSTALL_PATH="${PATH_FLAG}"
            ;;
        *)
            echo "Error: Flag not supported."
            exit
            ;;
    esac
done

# Locate install directory
if [ -z ${INSTALL_PATH+x} ]; then
    INSTALL_PATH=$(readlink -e $(type -p spotify) 2> /dev/null | rev | cut -d/ -f2- | rev)
    if [[ -d ${INSTALL_PATH} && ${INSTALL_PATH} != "/usr/bin" ]]; then
        echo "Spotify directory found in PATH: ${INSTALL_PATH}"
    elif [[ ! -d ${INSTALL_PATH} ]]; then
        echo -e "\nSpotify not found in PATH. Searching for Spotify directory..."
        INSTALL_PATH=$(timeout 10 find / -type f -path "*/spotify*Apps/*" -name "xpui.spa" -size -7M -size +3M -print -quit 2> /dev/null | rev | cut -d/ -f3- | rev)
        if [[ -d ${INSTALL_PATH} ]]; then
            echo "Spotify directory found: ${INSTALL_PATH}"
        elif [[ ! -d ${INSTALL_PATH} ]]; then
            echo -e "Spotify directory not found. Set directory path with -P flag.\nExiting...\n"
            exit
        fi
    elif [[ ${INSTALL_PATH} == "/usr/bin" ]]; then
        echo -e "\nSpotify PATH is set to /usr/bin, searching for Spotify directory..."
        INSTALL_PATH=$(timeout 10 find / -type f -path "*/spotify*Apps/*" -name "xpui.spa" -size -7M -size +3M -print -quit 2> /dev/null | rev | cut -d/ -f3- | rev)
        if [[ -d ${INSTALL_PATH} && ${INSTALL_PATH} != "/usr/bin" ]]; then
            echo "Spotify directory found: ${INSTALL_PATH}"
        elif [[ ${INSTALL_PATH} == "/usr/bin" ]] || [[ ! -d ${INSTALL_PATH} ]]; then
            echo -e "Spotify directory not found. Set directory path with -P flag.\nExiting...\n"
            exit
        fi
    fi
else
    if [[ ! -d ${INSTALL_PATH} ]]; then
        echo -e "Directory path set by -P was not found.\nExiting...\n"
        exit
    fi
fi

# XPUI paths
XPUI_PATH="${INSTALL_PATH}/Apps"
XPUI_SPA="${XPUI_PATH}/xpui.spa"
XPUI_BAK="${XPUI_PATH}/xpui.bak"

# Check for backup file
if [[ ! -f ${XPUI_BAK} ]]; then
    echo -e "Backup file not found.\nExiting...\n"
    exit
fi

# Uninstall patch
echo "Removing patch..."
rm "${XPUI_SPA}"
mv "${XPUI_BAK}" "${XPUI_SPA}"

echo -e "SpotX patch removed and backup restored!\n"
